#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/wait.h>
#include<stdlib.h>

// int main()
// {
//     pid_t pid_me,pid_p,pid_g;
//     pid_me=getpid();
//     pid_p=getppid();
//     pid_g=__getpgid(pid_me);

//     printf("%d %d %d\n",pid_me,pid_p,pid_g);
//     return 0;
// }

// int main()
// {
//     pid_t child_pid;
//     child_pid=fork();
//     if(child_pid < 0)
//         printf("create exe fail!\n");
//     if(child_pid == 0)
//     {
//         while(1)
//         {
//             printf("this is a child process!\n");
//             sleep(1);
//         }
//         // printf("child:%d %ld %d\n",getpid(),getppid(),__getpgid(getpid()));
//         // printf("this is a child process!\n");
//     }
//     else
//     {
//         while(1)
//         {
//             printf("this is a parent process!\n");
//             sleep(1);
//         }
//         // printf("father:%d %d %ld %d\n",child_pid,getpid(),getppid(),__getpgid(getpid()));
//         // printf("this is a parent process!\n");
//         // while (1);
//     }
//     return 0;
// }

// int num=0;
int main()
{
    // int num=0;
    pid_t child_pid;
    child_pid=fork();
    if(child_pid < 0)
        printf("create exe fail!\n");
    if(child_pid == 0)
    {
        // while(1)
        // {
            // num++;
            for(int i=0;i<3;i++)
            {
                printf("this is a child process!\n");
                sleep(3);
            }
            exit(2);
        // }

    }
    else
    {
        // while(1)
        // {
            int status=0;
            printf("this is a parent process!\n");
            // wait(&status);
            waitpid(child_pid,&status,0);
            if(WIFEXITED(status)!=0)
            {
                printf("child is died! the status of child exit is %d\n",WEXITSTATUS(status));
            }
    } 
    return 0;
}